import { DataBlocker, DataProxy } from "../../frame/A-LIB/sources/lib.b.data";

class Status {
	/** 棋盘洗牌中 */
	shuffling: boolean;
	/** 单局关卡内消除的砖块数量 */
	remove_tile_count: number;

	/** 游戏是否结束 */
	gameover: boolean;

	resurgence: number;

	guide_inited: boolean;

	/** 道具数量 */
	prop_stash: number;
	/** 道具数量 */
	prop_revoke: number;
	/** 道具数量 */
	prop_shuffle: number;

	home_ui_btn_lock: boolean;
}

const blocker: DataBlocker<Status> = {
	get: {
		guide_inited(proxy, value) {
			return value??false;
		},
		prop_stash(proxy, value) {
			return value??0;
		},
		prop_revoke(proxy, value) {
			return value??0;
		},
		prop_shuffle(proxy, value) {
			return value??0;
		},
		remove_tile_count(proxy, value) {
			return value??0;
		},
		home_ui_btn_lock(proxy, value) {
			return value??false;
		},
	}
}

const proxy_map = new Map<string, Status>();

export default function get_proxy(prefix?: string){
	prefix = prefix??'';
	if(!proxy_map.has(prefix)){
		proxy_map.set(prefix, DataProxy.initProxy('game_status', new Status(), false, blocker, prefix));
	}
	return proxy_map.get(prefix);
}
